﻿//引用类库  Microsoft.EntityFrameworkCore.Design
// Pomelo.EntityFrameworkCore.MySql
using ConsoleApp11;
using Microsoft.EntityFrameworkCore;

DbContextOptionsBuilder<MyDBContext> builder = new DbContextOptionsBuilder<MyDBContext>();
builder.UseMySql(Com.ConnectString, ServerVersion.AutoDetect(Com.ConnectString));

var options = builder.Options;

using (var context = new MyDBContext(options))
{
    //var users= context.Users.ToList();
    //foreach(var user in users)
    //{
    //    Console.WriteLine(user.Name);
    //}

    //var user = new TUser
    //{
    //    Id = Guid.NewGuid().ToString(),
    //    Name = "zhangsan",
    //    Password = "123456",
    //    CreateTime = DateTime.Now
    //};
    //context.Users.Add(user);
    //context.SaveChanges();
    //var user = context.Users.FirstOrDefault(t => t.Name == "zhangsan");
    //if(user != null) {
    //    context.Remove(user);
    //    context.SaveChanges();
    //}   

    //var user = context.Users.FirstOrDefault(t => t.Name == "zhangsan");
    //if (user != null)
    //{
    //    user.Password = "654321";
    //    context.SaveChanges();
    //}
    // List<TModule> modules = new List<TModule>()
    // {
    //     new TModule
    //     {
    //         Id = Guid.NewGuid().ToString(),
    //         Name = "用户管理",
    //         CreateTime = DateTime.Now
    //     },
    //      new TModule
    //     {
    //         Id = Guid.NewGuid().ToString(),
    //         Name = "角色管理",
    //         CreateTime = DateTime.Now
    //     },
    //        new TModule
    //     {
    //         Id = Guid.NewGuid().ToString(),
    //         Name = "权限管理",
    //         CreateTime = DateTime.Now
    //     },
    //         new TModule
    //     {
    //         Id = Guid.NewGuid().ToString(),
    //         Name = "内容管理",
    //         CreateTime = DateTime.Now
    //     },
    //           new TModule
    //     {
    //         Id = Guid.NewGuid().ToString(),
    //         Name = "日志管理",
    //         CreateTime = DateTime.Now
    //     },
    // };
    //var tran=  context.Database.BeginTransaction();
    // try
    // {
    //     context.Modules.AddRange(modules);
    //     context.SaveChanges();
    //     tran.Commit();
    // }
    // catch (Exception ex)
    // {
    //     tran.Rollback();
    //     throw;
    // }
    //List<TUserModule> userModules = new List<TUserModule>()
    //{
    //    new TUserModule
    //    {
    //        Id = Guid.NewGuid().ToString(),
    //        UserId="a902382e-71d2-4342-a161-c8efd6757bc5",
    //        ModuleId="4d20a295-ccc7-452e-a022-4d04da160595"
    //    },
    //     new TUserModule
    //    {
    //        Id = Guid.NewGuid().ToString(),
    //        UserId="a902382e-71d2-4342-a161-c8efd6757bc5",
    //        ModuleId="145bad37-f8b5-455c-b8c2-d1d5170aa0c0"
    //    },
    //      new TUserModule
    //    {
    //        Id = Guid.NewGuid().ToString(),
    //        UserId="a902382e-71d2-4342-a161-c8efd6757bc5",
    //        ModuleId="23d5715e-cfe3-4adf-a74b-9e86caa2c334"
    //    },
    //};
    //var tran = context.Database.BeginTransaction();
    //try
    //{
    //    context.UsersModule.AddRange(userModules);
    //    context.SaveChanges();
    //    tran.Commit();
    //}
    //catch (Exception ex)
    //{
    //    tran.Rollback();
    //    throw;
    //}
    string userid = "a902382e-71d2-4342-a161-c8efd6757bc5";
    var linq = from um in context.UsersModule
               join u in context.Users
               on um.UserId equals u.Id
               join m in context.Modules
               on um.ModuleId equals m.Id
               where um.UserId == userid
               select new
               {
                   um.ModuleId,
                   um.UserId,
                   UseName= u.Name,
                   ModuleName=m.Name
               };

    var list= linq.ToList();
    foreach(var item in list)
    {
        Console.WriteLine(item.UseName+" "+item.UserId+" "+item.ModuleId+" "+item.ModuleName);
    }
}

Console.WriteLine("finish");